package chapter04;

public class Java24_Object {
    public static void main(String[] args) {
        // TODO 匿名类
        // 在某些情况下，类的名称不重要，我们只想使用类中的方法或功能，此时可以采用匿名类
        // 匿名类：没有名字的类
        Me me = new Me();
        me.sayHello(new Zhangsan());
        me.sayHello(new Lisi());

        me.sayHello(new Person24(){
            public String name(){
                return "王五";
            }
        });
        me.sayHello(new Person24(){
            public String name(){
                return "赵六";
            }
        });

        // 接口同样适用
        new Bird24().fly();

        new Fly(){
            public void fly(){
                System.out.println("使用飞行器飞行");
            }
        }.fly();

    }
}
interface Fly {
    // 接口中定义的方法都是抽象的（抽象方法）；接口中定义的属性都是常量不能更改
    public void fly();
}
class Bird24 implements Fly{
    public void fly(){
        System.out.println("鸟在飞");
    }
}
abstract class Person24{
    public abstract String name();
}
class Me{
    public void sayHello(Person24 person24){
        System.out.println("Hello"+person24.name());
    }
}
class Zhangsan extends Person24{
    public String name(){
        return "张三";
    }
}
class Lisi extends Person24{
    public String name(){
        return "李四";
    }
}